﻿using System;

namespace Heaven.Graphics
{
    /// <summary>
    /// Метод декларации вершины. 
    /// Этот метод сообщает тесселятору что 
    /// необходимо генерировать во время тесселяции
    /// </summary>
	public enum DeclarationMethod {
		/// <summary>
		/// Значение по умолчанию. Тесселятор копирует данные вершин (сплайны для патчей) как есть, без дополнительных вычислений. 
		/// Когда тесселятор используется, этот элемент интерполируется. Иначе вершинные данные копируются во входной регистр
		/// Входной и выходной тип могут быть любыми
		/// </summary>
		Default = 0,
		/// <summary>
		/// Вычисление касательной к точке на прямоугольном/треугольном патче в U направлении. 
		/// Входной тип может быть Float3, Float4, Color, UByte4, Short4. 
		/// Выходной тип всегда Float3
		/// </summary>
		PartialU,
		/// <summary>
        /// Вычисление касательной к точке на прямоугольном/треугольном патче в V направлении. 
        /// Входной тип может быть Float3, Float4, Color, UByte4, Short4. 
        /// Выходной тип всегда Float3
        /// </summary>
		PartialV,
		/// <summary>
		/// Вычисление нормали к точке на прямоугольном или триугольном патче путем вычисления векторного произведения двух касательных.
		/// Входным типом может быть Float[43], Color, UByte4, or Short4. Выходной тип всегда Float3
		/// </summary>
		CrossUV,
		/// <summary>
		/// Копируем U, V значения точки на прямоугольный или триугольный патч.
        /// Результат 2-D float. Входной тип должен быть выбран Unused. 
		/// Выходные данные всегда типа Float2. 
        /// Входной поток и смещение тоже Unused (но могут быть 0)
		/// </summary>
		UV,
		/// <summary>
		/// Поиск displacement map. Входным типом может быть Float2, Float3 или Float4. 
		/// Только x и y координаты используются при поиске texture map.
		/// Выходной тип всегда Float1. 
		/// Устройство должно поддерживать displacement mapping. 
		/// Эта константа поддерживается только в программируемом 
		/// конвейере для N-patch, если N-patches включены. 
		/// </summary>
		LookUp,
		/// <summary>
		/// Поиск presampled displacement map. Входным значением должно быть Unused. 
		/// Поток индексов и смещение в потоке должно быть установлено в 0. 
		/// Выходной тип для этой операции всегда Float1. 
		/// Устройство должно поддерживать displacement mapping. 
        /// Эта константа поддерживается только в программируемом 
        /// конвейере для N-patch, если N-patches включены. 
        /// </summary>
		LookUpPresampled,
	}
}
